﻿#region Header
// Copyright 2007-2011, Jerónimo Milea
// 
// This file is part of NetJsWire.
// 
//     NetJsWire is free software: you can redistribute it and/or modify
//     it under the terms of the GNU General Public License as published by
//     the Free Software Foundation, either version 3 of the License, or
//     (at your option) any later version.
// 
//     NetJsWire is distributed in the hope that it will be useful,
//     but WITHOUT ANY WARRANTY; without even the implied warranty of
//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//     GNU General Public License for more details.
// 
//     You should have received a copy of the GNU General Public License
//     along with NetJsWire.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

namespace NetJsWire.Widgets.Data
{
    public class CollectionContractResolver : DefaultContractResolver
    {
        private readonly char _startingWithChar;
        public CollectionContractResolver( char startingWithChar )
        {
            _startingWithChar = startingWithChar;
        }

        protected override IList<JsonProperty> CreateProperties( Type type, MemberSerialization memberSerialization )
        {
            var properties = base.CreateProperties( type, memberSerialization );
            // only serializer properties that start with the specified character
            //properties = properties.Where( p => p. ).ToList();

            return properties;
        }
        protected override IValueProvider CreateMemberValueProvider( MemberInfo member )
        {
            return base.CreateMemberValueProvider( member );
        }
        protected override List<MemberInfo> GetSerializableMembers( Type objectType )
        {
            if ( objectType.GetInterface( typeof( IList ).FullName ) != null )
            {

            }
            return base.GetSerializableMembers( objectType );
        }
    }
}
